package list;

import org.junit.Test;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class ListedListAPI {
    /**
     * 链接实现集合  包位置：java.util
     * list接口集合---三个实现类：
     * ArrayList 实现类：数组实现
     *                特点：查询快【按照下标】，增删慢【改动下标：元素】
     *LinkedList 实现类：双向链表实现
     *            特点：查询慢【按照下标】，增删快【首，尾元素，中间元素】
     *ArrayList与LinkedList大部分完全一致：
     * 添加add（）   get（） remove（）
     * size（）获取集合总数 clear（）清空集合元素
     * 不一致方法：
     * indexOf（） lastIndexOf
     * addFirst（）
     * addLast（）
     * removeFirst（）
     * removeLast（）
     */
    public  void testIndexOf(){
        //创建集合---双向链表集合
        List<String>  c=new LinkedList<>();
        c.add("喜喜");c.add("哈哈");c.add("呵呵");
        /**
         * ArrayList与LinkedList通用方法
         * indexOf()  返回值:int
         * 作用：返回指定元素在集合中第一次出现的索引位置
         *              理解：【返回元素下标位】
         */
        int index=c.indexOf("喜喜");
        /**
         * LinkedList独有方法
         * LastIndexOf()   返回值：int
         * 作用：返回最后的元素在集合中出现的索引位置
         */
        int lastIndex=c.lastIndexOf("喜喜");
        System.out.println("返回最后元素下标"+c);
    }
    /**
     * LinkedList独有方法
     * addFirst() 返回值：void
     * 作用：将指定元素添加值链表头部
     * addLast()
     * 作用：将指定元素添加值链表尾部
     * removeFirst()
     * removeLast
     */
    @Test
    public  void  test(){
        //创建集合--双向链表集合
        List<String>  c=new LinkedList<>();
        c.add("喜喜");c.add("哈哈");c.add("呵呵");
        //LinkedList独有方法
        ((LinkedList)c).addFirst("你好");
        ((LinkedList)c).addLast("我好");
        System.out.println();
        ((LinkedList)c).removeFirst();
        System.out.println();



















    }

















































}
